#ifndef IDEVICEBUFFERMANAGERBASE_H
#define IDEVICEBUFFERMANAGERBASE_H


#include "Framework/Prerequisites.h"

namespace tyro
{
	namespace Graphics
	{
		class IDeviceBufferManagerBase
		{
		public:
			
			IDeviceBufferManagerBase();

			VertexBufferBinding* CreateVertexBufferBinding();
			VertexDeclaration* CreateVertexDeclaration();
			virtual IDeviceVertexBufferSharedPtr CreateVertexBuffer(size_t vertexSize, size_t numVerts) = 0;
			virtual IDeviceIndexBufferSharedPtr CreateIndexBuffer(VertexIndexType indexType, size_t numIndecies) = 0;
			
		protected:

			typedef set<IDeviceVertexBuffer*>::type VertexBufferList;
			VertexBufferList	vertexBuffers;

			typedef set<IDeviceIndexBuffer*>::type VertexIndexList;
			VertexIndexList		vertexIndexBuffers;

			typedef set<VertexDeclaration*>::type VertexDeclarationList;
			VertexDeclarationList	vertexDeclarations;

			typedef set<VertexBufferBinding*>::type VertexBufferBindingList;
			VertexBufferBindingList	vertexBufferBindings;
			
		private:
			
			VertexBufferBinding* CreateVertexBufferBindingImpl();
			VertexDeclaration* CreateVertexDeclarationImpl();
		};
	}
}
#endif